package com.td.framework.common;

import java.util.List;

import com.td.framework.webmanager.domain.AppsysDmb;

public interface IBaseDao {
    /**
     * 增加数据
     * @param entity 持久化的实体类
     */
	public boolean saveEntity(Object entity);
	
	/**
	 * 删除 持久化的实体对象
	 * @param entity 持久化实体对象
	 */
	public boolean deleteEntity(Object entity);
	
	/**
	 * 删除持久化对象根据一个主键
	 * @param clazz
	 * @param id
	 */
	
	public void deleteById(Class clazz,long id);
	
	/**
	 * 删除持久化对象根据多个主键
	 * @param clazz
	 * @param ids
	 * @return
	 */	
	public boolean deleteBatch(Class clazz ,long[] ids);
	
	/**
	 *增加或者修改实体
	 * @param t
	 * @return	
	 */	
   public boolean saveOrUpdate(Object entity);
   
   /**
	 *修改实体
	 * @param t
	 * @return	
	 */	
  public boolean update(Object entity);
	
	
	/**
	 * 根据hql语句得到集合
	 * @param queryString
	 * @return
	 */
	public List getListByHql(String queryString);

	/**
	 * 根据hql语句得到分页后的集合	
	 * @param queryString
	 * @param startRow
	 * @param pageSize
	 * @return
	 */	
	public List getPageList(String queryString ,int startRow,int pageSize);
	
	/**
	 * 根据得到个数的sql语句的到sql的返回值
	 * @param sql
	 * @return
	 */
	public int getRowsBySql(String sql);  
	
	/**
	 *  根据hql语句得到数量结果
	 * @param hql 查询数量的hql语句
	 * @return
	 */
	public int getRowsByHql(String hql);
	
	/**
	 *  根据hql语句得到数量结果
	 * @param hql 查询list的hql语句
	 * @return
	 */
	public int getRowsByListHql(String hql);
   
	/**
	 * 根据sql语句得到键值对集合,要只有两列结果第一列为key第二列为value
	 * @param sql SQL语句
	 */
	public List  getDmbeansBySql(String sql);
	
	/**
	 * 根据序列化id得到实体类
	 * @param clazz 实体类
	 * @param  id 序列化主键
	 */
	public Object getEntityById(Class clazz, long id);
	
	/**
	 * @toDo:通过代码类型查询代码信息;
	 * @param dmlx
	 * @return list
	 */		
	public List<AppsysDmb> getDmbByDmlx(String dmlx);
	
}
